using System;
using System.Threading.Tasks;
using Volo.Abp.Application.Dtos;
using Joy.Erp.BasicArchives.Core.Filters;

namespace Joy.Erp.BasicArchives.Production
{
    public interface IPlanOrderAppService
    {
        Task<PlanOrderDto> GetAsync(Guid id);
        Task<PlanOrderPreparationDto> GetChildAsync(Guid id);
        Task<PlanOrderDto> FindAsync(string filter);
        Task<PlanOrderDto> FindBySourceKeyAsync(string sourceKey, string sourceType);
        Task<PagedResultDto<PlanOrderDto>> GetListAsync(FilterRequestDto input);
        Task<PagedResultDto<PlanOrderDto>> QueryAsync(FilterGroupRequestDto input);
        Task<PagedResultDto<PlanOrderPreparationDto>> QueryChildrenAsync(FilterGroupRequestDto input);
        Task<PlanOrderDto> CreateAsync(PlanOrderCreateDto input);
        Task<PlanOrderDto> UpdateAsync(Guid id, PlanOrderUpdateDto input);
        Task<PlanOrderDto> SubmitAsync(Guid id);
        Task<PlanOrderDto> ApproveAsync(Guid id);
        Task<PlanOrderDto> UnApproveAsync(Guid id);
        Task DeleteAsync(Guid id);
    }
}